package com.zhitan.ems.app.iot.entity;

import java.util.Date;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.zhitan.ems.common.annotation.Excel;
import com.zhitan.ems.framework.core.mp.base.BaseEntity;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 产品
 * 
 * @author zhitan
 * 
 * @date 2025-09-19 22:15:46
 */
@Data
@EqualsAndHashCode(callSuper = true)
@TableName("iot_product")
public class ProductEntity extends BaseEntity {
	private static final long serialVersionUID = 1L;
	/**
	 * 产品ID
	 */
	@TableId
	@ApiModelProperty("产品ID")
	@Excel(name = "产品ID")
	private Long id;
	/**
	 * 产品名称
	 */
	@ApiModelProperty("产品名称")
	@Excel(name = "产品名称")
	private String productName;
	/**
	 * 协议编号
	 */
	@ApiModelProperty("协议编号")
	@Excel(name = "协议编号")
	private String protocolCode;
	/**
	 * 产品分类ID
	 */
	@ApiModelProperty("产品分类ID")
	@Excel(name = "产品分类ID")
	private Long categoryId;
	/**
	 * 产品分类名称
	 */
	@ApiModelProperty("产品分类名称")
	@Excel(name = "产品分类名称")
	private String categoryName;
	/**
	 * 租户ID
	 */
	@ApiModelProperty("租户ID")
	@Excel(name = "租户ID")
	private Long tenantId;
	/**
	 * 租户名称
	 */
	@ApiModelProperty("租户名称")
	@Excel(name = "租户名称")
	private String tenantName;
	/**
	 * 是否系统通用（0-否，1-是）
	 */
	@ApiModelProperty("是否系统通用（0-否，1-是）")
	@Excel(name = "是否系统通用（0-否，1-是）")
	private Integer isSys;
	/**
	 * 是否启用授权码（0-否，1-是）
	 */
	@ApiModelProperty("是否启用授权码（0-否，1-是）")
	@Excel(name = "是否启用授权码（0-否，1-是）")
	private Integer isAuthorize;
	/**
	 * mqtt账号
	 */
	@ApiModelProperty("mqtt账号")
	@Excel(name = "mqtt账号")
	private String mqttAccount;
	/**
	 * mqtt密码
	 */
	@ApiModelProperty("mqtt密码")
	@Excel(name = "mqtt密码")
	private String mqttPassword;
	/**
	 * 产品秘钥
	 */
	@ApiModelProperty("产品秘钥")
	@Excel(name = "产品秘钥")
	private String mqttSecret;
	/**
	 * 状态（1-未发布，2-已发布）
	 */
	@ApiModelProperty("状态（1-未发布，2-已发布）")
	@Excel(name = "状态（1-未发布，2-已发布）")
	private Integer status;
	/**
	 * 物模型JSON（属性、功能、事件）
	 */
	@ApiModelProperty("物模型JSON（属性、功能、事件）")
	@Excel(name = "物模型JSON（属性、功能、事件）")
	private String thingsModelsJson;
	/**
	 * 设备类型（1-直连设备、2-网关设备、3-监控设备）
	 */
	@ApiModelProperty("设备类型（1-直连设备、2-网关设备、3-监控设备）")
	@Excel(name = "设备类型（1-直连设备、2-网关设备、3-监控设备）")
	private Integer deviceType;
	/**
	 * 联网方式（1=wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他）
	 */
	@ApiModelProperty("联网方式（1=wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他）")
	@Excel(name = "联网方式（1=wifi、2=蜂窝(2G/3G/4G/5G)、3=以太网、4=其他）")
	private Integer networkMethod;
	/**
	 * 认证方式（1-简单认证、2-加密认证、3-简单+加密）
	 */
	@ApiModelProperty("认证方式（1-简单认证、2-加密认证、3-简单+加密）")
	@Excel(name = "认证方式（1-简单认证、2-加密认证、3-简单+加密）")
	private Integer vertificateMethod;
	/**
	 * 图片地址
	 */
	@ApiModelProperty("图片地址")
	@Excel(name = "图片地址")
	private String imgUrl;
	/**
	 * 创建者
	 */
	@ApiModelProperty("创建者")
	@Excel(name = "创建者")
	private String createBy;
	/**
	 * 创建时间
	 */
	@ApiModelProperty("创建时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "创建时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date createAt;
	/**
	 * 更新者
	 */
	@ApiModelProperty("更新者")
	@Excel(name = "更新者")
	private String updateBy;
	/**
	 * 更新时间
	 */
	@ApiModelProperty("更新时间")
	@JsonFormat(pattern = "yyyy-MM-dd")
	@Excel(name = "更新时间", width = 30, dateFormat = "yyyy-MM-dd")
	private Date updateAt;
	/**
	 * 备注
	 */
	@ApiModelProperty("备注")
	@Excel(name = "备注")
	private String remark;
	/**
	 * 产品支持的传输协议
	 */
	@ApiModelProperty("产品支持的传输协议")
	@Excel(name = "产品支持的传输协议")
	private String transport;

}